#pragma once

class ChessTree;

namespace UnManagedWrapper
{
	public delegate void SimpleCallback();
	public delegate bool ReturnBoolCallback();

	public ref class ChessTrainerWrapper
	{
		ChessTree* _tree;
		FiveInRow::ITrainer ^_trainer;
	public:
		ChessTrainerWrapper(FiveInRow::ITrainer^ trainer);
		ChessTrainerWrapper(System::String^ treePath, FiveInRow::ITrainer^ trainer);

		SimpleCallback ^ OnStart;
		SimpleCallback ^ OnEpoch;
		ReturnBoolCallback ^ OnCheckEnd;

		void Run();

		ChessTree* GetTree();
	};
}


